cssstyle: Remove unused optimization
authorBenjamin Otte <otte@redhat.com>
Sat, 14 Feb 2015 00:59:17 +0000 (01:59 +0100)
committerBenjamin Otte <otte@redhat.com>
Wed, 18 Mar 2015 14:23:31 +0000 (15:23 +0100)
After measuring it, I realized the optimization never triggers for
Adwaita and rarely ever triggers for simple themes. So it is not
useful to keep it around.

gtk/gtkcssnode.c
gtk/gtkcssnodeprivate.h
gtk/gtkcssstaticstyle.c
gtk/gtkcssstaticstyleprivate.h
gtk/gtkcsswidgetnode.c

index e59bce84b1df273f3cb3300895b813e02087a1ec..b9b6bbcb7890dd2fc3b190e0f2122610c26cca53 100644 (file)
@@ -169,39 +169,6 @@ store_in_global_parent_cache (GtkCssNode                  *node,
                        g_object_ref (style));
 }
 
-GtkCssStyle *
-gtk_css_node_update_style (GtkCssNode       *cssnode,
-                           GtkCssStyle      *style,
-                           const GtkBitmask *parent_changes)
-{
-  const GtkCssNodeDeclaration *decl;
-  GtkCssMatcher matcher;
-  GtkCssStyle *parent;
-  GtkCssStyle *result;
-
-  parent = cssnode->parent ? cssnode->parent->style : NULL;
-  decl = gtk_css_node_get_declaration (cssnode);
-
-  result = lookup_in_global_parent_cache (cssnode, parent, decl);
-  if (result)
-    return g_object_ref (result);
-
-  if (!gtk_css_node_init_matcher (cssnode, &matcher))
-    {
-      g_assert_not_reached ();
-    }
-
-  result = gtk_css_static_style_new_update (GTK_CSS_STATIC_STYLE (style),
-                                            parent_changes,
-                                            gtk_css_node_get_style_provider (cssnode),
-                                            &matcher,
-                                            parent);
-
-  store_in_global_parent_cache (cssnode, parent, decl, style);
-
-  return result;
-}
-
 GtkCssStyle *
 gtk_css_node_create_style (GtkCssNode *cssnode)
 {
index ea082ba9ad90eeebfab6b12f93c3ac5cc242ea4e..c9bbe5709e52287596bc7397987c7187cd848d01 100644 (file)
@@ -130,9 +130,6 @@ GtkCssStyle *           gtk_css_node_get_style          (GtkCssNode            *
 void                    gtk_css_node_set_style          (GtkCssNode            *cssnode,
                                                          GtkCssStyle           *style);
 GtkCssStyle *           gtk_css_node_create_style       (GtkCssNode            *cssnode);
-GtkCssStyle *           gtk_css_node_update_style       (GtkCssNode            *cssnode,
-                                                         GtkCssStyle           *style,
-                                                         const GtkBitmask      *parent_changes);
 
 void                    gtk_css_node_invalidate         (GtkCssNode            *cssnode,
                                                          GtkCssChange           change);
index 9b0e3d457fefd63915b71e0ea2aa43d380941379..e14f59e0dd903912ecde7de72116f4ed12556ba7 100644 (file)
@@ -66,28 +66,6 @@ gtk_css_static_style_get_section (GtkCssStyle *style,
   return g_ptr_array_index (sstyle->sections, id);
 }
 
-/* Compute the bitmask of potentially changed properties if the parent has changed
- * the passed in ones.
- * This is for example needed when changes in the "color" property will affect
- * all properties using "currentColor" as a color.
- */
-static GtkBitmask *
-gtk_css_static_style_compute_dependencies (GtkCssStaticStyle *style,
-                                           const GtkBitmask  *parent_changes)
-{
-  GtkCssStaticStyle *sstyle = GTK_CSS_STATIC_STYLE (style);
-  GtkBitmask *changes;
-
-  changes = _gtk_bitmask_copy (parent_changes);
-  changes = _gtk_bitmask_intersect (changes, sstyle->depends_on_parent);
-  if (_gtk_bitmask_get (changes, GTK_CSS_PROPERTY_COLOR))
-    changes = _gtk_bitmask_union (changes, sstyle->depends_on_color);
-  if (_gtk_bitmask_get (changes, GTK_CSS_PROPERTY_FONT_SIZE))
-    changes = _gtk_bitmask_union (changes, sstyle->depends_on_font_size);
-
-  return changes;
-}
-
 static void
 gtk_css_static_style_dispose (GObject *object)
 {
@@ -107,19 +85,6 @@ gtk_css_static_style_dispose (GObject *object)
   G_OBJECT_CLASS (gtk_css_static_style_parent_class)->dispose (object);
 }
 
-static void
-gtk_css_static_style_finalize (GObject *object)
-{
-  GtkCssStaticStyle *style = GTK_CSS_STATIC_STYLE (object);
-
-  _gtk_bitmask_free (style->depends_on_parent);
-  _gtk_bitmask_free (style->equals_parent);
-  _gtk_bitmask_free (style->depends_on_color);
-  _gtk_bitmask_free (style->depends_on_font_size);
-
-  G_OBJECT_CLASS (gtk_css_static_style_parent_class)->finalize (object);
-}
-
 static void
 gtk_css_static_style_class_init (GtkCssStaticStyleClass *klass)
 {
@@ -127,7 +92,6 @@ gtk_css_static_style_class_init (GtkCssStaticStyleClass *klass)
   GtkCssStyleClass *style_class = GTK_CSS_STYLE_CLASS (klass);
 
   object_class->dispose = gtk_css_static_style_dispose;
-  object_class->finalize = gtk_css_static_style_finalize;
 
   style_class->get_value = gtk_css_static_style_get_value;
   style_class->get_section = gtk_css_static_style_get_section;
@@ -136,10 +100,6 @@ gtk_css_static_style_class_init (GtkCssStaticStyleClass *klass)
 static void
 gtk_css_static_style_init (GtkCssStaticStyle *style)
 {
-  style->depends_on_parent = _gtk_bitmask_new ();
-  style->equals_parent = _gtk_bitmask_new ();
-  style->depends_on_color = _gtk_bitmask_new ();
-  style->depends_on_font_size = _gtk_bitmask_new ();
 }
 
 static void
@@ -235,71 +195,6 @@ gtk_css_static_style_new_compute (GtkStyleProviderPrivate *provider,
   return GTK_CSS_STYLE (result);
 }
 
-GtkCssStyle *
-gtk_css_static_style_new_update (GtkCssStaticStyle       *style,
-                                 const GtkBitmask        *parent_changes,
-                                 GtkStyleProviderPrivate *provider,
-                                 const GtkCssMatcher     *matcher,
-                                 GtkCssStyle             *parent)
-{
-  GtkCssStaticStyle *result;
-  GtkCssLookup *lookup;
-  GtkBitmask *changes;
-  guint i;
-
-  gtk_internal_return_val_if_fail (GTK_IS_CSS_STATIC_STYLE (style), NULL);
-  gtk_internal_return_val_if_fail (parent_changes != NULL, NULL);
-  gtk_internal_return_val_if_fail (GTK_IS_STYLE_PROVIDER_PRIVATE (provider), NULL);
-  gtk_internal_return_val_if_fail (matcher != NULL, NULL);
-
-  changes = gtk_css_static_style_compute_dependencies (style, parent_changes);
-  if (_gtk_bitmask_is_empty (changes))
-    {
-      _gtk_bitmask_free (changes);
-      return g_object_ref (style);
-    }
-
-  result = g_object_new (GTK_TYPE_CSS_STATIC_STYLE, NULL);
-
-  result->change = style->change;
-  result->depends_on_parent = _gtk_bitmask_subtract (_gtk_bitmask_union (result->depends_on_parent, style->depends_on_parent),
-                                                     changes);
-  result->equals_parent = _gtk_bitmask_subtract (_gtk_bitmask_union (result->equals_parent, style->equals_parent),
-                                                 changes);
-  result->depends_on_color = _gtk_bitmask_subtract (_gtk_bitmask_union (result->depends_on_color, style->depends_on_color),
-                                                    changes);
-  result->depends_on_font_size = _gtk_bitmask_subtract (_gtk_bitmask_union (result->depends_on_font_size, style->depends_on_font_size),
-                                                        changes);
-
-  for (i = 0; i < style->values->len; i++)
-    {
-      if (_gtk_bitmask_get (changes, i))
-        continue;
-
-      gtk_css_static_style_set_value (result,
-                                      i,
-                                      gtk_css_static_style_get_value (GTK_CSS_STYLE (style), i),
-                                      gtk_css_static_style_get_section (GTK_CSS_STYLE (style), i));
-    }
-
-  lookup = _gtk_css_lookup_new (changes);
-
-  _gtk_style_provider_private_lookup (provider,
-                                      matcher,
-                                      lookup,
-                                      NULL);
-
-  _gtk_css_lookup_resolve (lookup, 
-                           provider,
-                           result,
-                           parent);
-
-  _gtk_css_lookup_free (lookup);
-  _gtk_bitmask_free (changes);
-
-  return GTK_CSS_STYLE (result);
-}
-
 void
 gtk_css_static_style_compute_value (GtkCssStaticStyle       *style,
                                     GtkStyleProviderPrivate *provider,
@@ -336,15 +231,6 @@ gtk_css_static_style_compute_value (GtkCssStaticStyle       *style,
 
   gtk_css_static_style_set_value (style, id, value, section);
 
-  if (dependencies & (GTK_CSS_DEPENDS_ON_PARENT | GTK_CSS_EQUALS_PARENT))
-    style->depends_on_parent = _gtk_bitmask_set (style->depends_on_parent, id, TRUE);
-  if (dependencies & (GTK_CSS_EQUALS_PARENT))
-    style->equals_parent = _gtk_bitmask_set (style->equals_parent, id, TRUE);
-  if (dependencies & (GTK_CSS_DEPENDS_ON_COLOR))
-    style->depends_on_color = _gtk_bitmask_set (style->depends_on_color, id, TRUE);
-  if (dependencies & (GTK_CSS_DEPENDS_ON_FONT_SIZE))
-    style->depends_on_font_size = _gtk_bitmask_set (style->depends_on_font_size, id, TRUE);
-
   _gtk_css_value_unref (value);
   _gtk_css_value_unref (specified);
 }
index 6abc20541fd8237bc95884c7f98ad7fff4e399a6..d23b74e18a35155aa0cff7b297e444d996c66919 100644 (file)
@@ -42,11 +42,6 @@ struct _GtkCssStaticStyle
   GPtrArray             *values;               /* the values */
   GPtrArray             *sections;             /* sections the values are defined in */
 
-  GtkBitmask            *depends_on_parent;    /* values that depend on parent values */
-  GtkBitmask            *equals_parent;        /* values that equal their parent values */
-  GtkBitmask            *depends_on_color;     /* values that depend on the color property */
-  GtkBitmask            *depends_on_font_size; /* values that depend on the font-size property */
-
   GtkCssChange           change;               /* change as returned by value lookup */
 };
 
@@ -61,11 +56,6 @@ GtkCssStyle *           gtk_css_static_style_get_default        (void);
 GtkCssStyle *           gtk_css_static_style_new_compute        (GtkStyleProviderPrivate *provider,
                                                                  const GtkCssMatcher    *matcher,
                                                                  GtkCssStyle            *parent);
-GtkCssStyle *           gtk_css_static_style_new_update         (GtkCssStaticStyle      *style,
-                                                                 const GtkBitmask       *parent_changes,
-                                                                 GtkStyleProviderPrivate *provider,
-                                                                 const GtkCssMatcher    *matcher,
-                                                                 GtkCssStyle            *parent);
 
 void                    gtk_css_static_style_compute_value      (GtkCssStaticStyle      *style,
                                                                  GtkStyleProviderPrivate*provider,
index eb640ea6ac1175ed3271c2d4d4f96964d3a00373..9a662df9b311ce236daf327cfaa774c2c12a629e 100644 (file)
@@ -90,16 +90,11 @@ validate_static_style (GtkCssNode       *node,
                        GtkCssChange      change,
                        const GtkBitmask *parent_changes)
 {
-  if (gtk_css_static_style_needs_revalidate (GTK_CSS_STATIC_STYLE (style), change))
+  if (gtk_css_static_style_needs_revalidate (GTK_CSS_STATIC_STYLE (style), change) ||
+      !_gtk_bitmask_is_empty (parent_changes))
     {
       return gtk_css_node_create_style (node);
     }
-  else if (!_gtk_bitmask_is_empty (parent_changes))
-    {
-      return gtk_css_node_update_style (node,
-                                        style,
-                                        parent_changes);
-    }
   else
     {
       return g_object_ref (style);